
import datetime
import csv
import re

def append_dict_to_csv(dictionary):
    file_path = 'temp/result.csv'
    fieldnames = list(dictionary.keys())
    print(fieldnames)
    print(dictionary.items())
    print(dictionary.values())
    try:
        # 以追加模式打开 CSV 文件
        with open(file_path, 'a', newline='', encoding='utf-8') as csvfile:
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
            # 检查文件是否为空，如果为空则写入表头
            if csvfile.tell() == 0:
                writer.writeheader()
            # 写入字典数据
            writer.writerow(dictionary)
    except FileNotFoundError:
        # 如果文件不存在，则创建文件并写入表头和数据
        with open(file_path, 'w', newline='', encoding='utf-8') as csvfile:
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
            writer.writeheader()
            writer.writerow(dictionary)
def extract_info(text):

    # 初始化结果字典
    result = {
        '姓名': None, '审批状态': None, '审批编号': None, '提交时间': None,
        '所在部门': None, '费用类型': None, '事由': None, '费用金额': None,
        '发生日期': None, '备注': None, '费用凭证': None,
        '用户列表': [], '审批流程': 0
    }

    try:
        # 提取基本信息
        result['姓名'] = re.search(r'^(\S+)\s*的费用', text, re.MULTILINE).group(1) if re.search(r'^(\S+)\s*的费用', text,
                                                                                                 re.MULTILINE) else None
        result['审批状态'] = re.search(r'的费用\s*\n\s*(\S+)', text, re.MULTILINE).group(1) if re.search(
            r'的费用\s*\n\s*(\S+)', text, re.MULTILINE) else None
        result['审批编号'] = re.search(r'审批编号\s*\n\s*(\d+)', text, re.MULTILINE).group(1) if re.search(
            r'审批编号\s*\n\s*(\d+)', text, re.MULTILINE) else None
        result['提交时间'] = re.search(r'提交时间\s*\n\s*(\d{4}/\d{1,2}/\d{1,2}\s+\d{1,2}:\d{1,2})', text,
                                       re.MULTILINE).group(1) if re.search(
            r'提交时间\s*\n\s*(\d{4}/\d{1,2}/\d{1,2}\s+\d{1,2}:\d{1,2})', text, re.MULTILINE) else None
        result['所在部门'] = re.search(r'所在部门\s*\n\s*(\S+)', text, re.MULTILINE).group(1) if re.search(
            r'所在部门\s*\n\s*(\S+)', text, re.MULTILINE) else None
        result['费用类型'] = re.search(r'费用类型\s*\n\s*(\S+)', text, re.MULTILINE).group(1) if re.search(
            r'费用类型\s*\n\s*(\S+)', text, re.MULTILINE) else None
        result['事由'] = re.search(r'事由\s*\n\s*([\s\S]*?)费用金额', text, re.MULTILINE).group(1) if re.search(r'事由\s*\n\s*([\s\S]*?)费用金额',
                                                                                                   text,
                                                                                                   re.MULTILINE) else None
        result['费用金额'] = re.search(r'费用金额\s*\n\s*(\S+)', text, re.MULTILINE).group(1) if re.search(
            r'费用金额\s*\n\s*(\S+)', text, re.MULTILINE) else None
        result['发生日期'] = re.search(r'发生日期\s*\n\s*(\d{4}/\d{1,2}/\d{1,2})', text, re.MULTILINE).group(
            1) if re.search(r'发生日期\s*\n\s*(\d{4}/\d{1,2}/\d{1,2})', text, re.MULTILINE) else None
        result['备注'] = re.search(r'备注\s*\n\s*([\s\S]*?)费用凭证', text, re.MULTILINE).group(1).strip() if re.search(
            r'备注\s*\n\s*([\s\S]*?)费用凭证', text, re.MULTILINE) else None
        result['费用凭证'] = re.search(r'费用凭证\s*\n\s*(\S+)', text, re.MULTILINE).group(1) if re.search(
            r'费用凭证\s*\n\s*(\S+)', text, re.MULTILINE) else None


        # 提取审批流程
        # 先定位审批流程区域
        result['审批流程'] = re.search(r'审批流程\s*\n\s*([\s\S]+?)(?=填写审批意见|$)', text).group(1) if re.search(
            r'审批流程\s*\n\s*([\s\S]+?)(?=填写审批意见|$)', text).group(1) else None

        result['审批流程'] = result['审批流程'].count('已同意')

        return result

    except:
        result = {
            '姓名': None, '审批状态': None, '审批编号': None, '提交时间': None,
            '所在部门': None, '费用类型': None, '事由': None, '费用金额': None,
            '发生日期': None, '备注': None, '费用凭证': None,
            '用户列表': [], '审批流程': 0
        }
        return result



def get_current_time():
    """获取当前时间，当前时分秒"""
    now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    hour = datetime.datetime.now().strftime("%H")
    mm = datetime.datetime.now().strftime("%M")
    ss = datetime.datetime.now().strftime("%S")
    return now_time, hour, mm, ss

def sleep_time(hour, m, sec):
    """返回总共秒数"""
    return hour * 3600 + m * 60 + sec



def parse_application(text):
    # 初始化结果字典
    result = {
        '申请类别': None,
        '用户信息': None,
        '用户套餐': None,
        'arpu值': None,
        '退订业务': None,
        '减免总金额': None,
        '增加折扣': None,
        '减免原因': None,
        '挽留策略': None,
        '是否有责': None,
        '具体责任人': None,
    }
    try:
        # 提取申请类别
        category_match = re.search(r'申请类别：(.+)', text)
        if category_match:
            result['申请类别'] = category_match.group(1).strip()

        # 提取用户信息（姓名和身份证号）
        user_info_match = re.search(r'用户信息：(\S+)(\d{17}[\dXx])', text)
        if user_info_match:
            result['用户信息'] = user_info_match.group(1)


        # 提取竖线分隔的字段
        fields = {
            '用户套餐': r'用户套餐：(.+)',
            'arpu值\*': r'arpu值\*：(.+)',
            '退订业务': r'退订业务：(.+)',
            '减免总金额': r'减免总金额：(.+)',
            '增加折扣': r'增加折扣：(.+)',
            '减免原因': r'减免原因\*：(.+)',
            '挽留策略': r'挽留策略：(.+)',
            '是否有责': r'是否有责：(.+)',
            '具体责任人': r'具体责任人：(.+)'
        }

        for key, pattern in fields.items():
            match = re.search(pattern, text)
            if match:
                # 去除首尾空格，并处理空值（如果字段后直接跟换行符）
                value = match.group(1).strip()
                result[key] = value if value else None

        return result

    except:
        result = {
            '申请类别': None,
            '用户信息': None,
            '用户套餐': None,
            'arpu值': None,
            '退订业务': None,
            '减免总金额': None,
            '增加折扣': None,
            '减免原因': None,
            '挽留策略': None,
            '是否有责': None,
            '具体责任人': None,
        }
        return result

